package com.hot100.easy;

/**
 * @ClassName Demo03
 * @Description 合并两个有序链表
 * @Author zt
 * @Date 14:47 2022/6/8
 * @Version 1.0
 * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
 **/
public class Demo03 {
    public static void main(String[] args) {
        //这个不是很会，主要是不熟悉指针指向

    }

    public static ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode pre = new ListNode(-1);
        ListNode list3=pre;
        while (list1!=null&&list2!=null){
            if(list1.val<=list2.val){
                list3.next=new ListNode(list1.val);
                list1=list1.next;
                list3=list3.next;
            }else {
                list3.next=new ListNode(list2.val);
                list2=list2.next;
                list3=list3.next;
            }
        }
        while (list1!=null){
            list3.next=new ListNode(list1.val);
            list1=list1.next;
            list3=list3.next;
        }
        while (list2!=null){
            list3.next=new ListNode(list2.val);
            list2=list2.next;
            list3=list3.next;
        }
        return pre.next;
    }

    public static class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
}